package com.yuan.order.service;

import com.yuan.order.dataobject.ProductInfo;
import com.yuan.order.dto.CartDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 商品信息
 *
 * @Author yuan
 * @Date 2021/2/24 17:24
 */
public interface ProductInfoService {
    /**
     * 查找一件商品信息
     *
     * @param productId
     * @return
     */
    ProductInfo findById(String productId);

    /**
     * 查询所有在架商品列表
     *
     * @return
     */
    List<ProductInfo> findUpAll();

    /**
     * 查找所有商品分页显示
     *
     * @param pageable
     * @return
     */
    Page<ProductInfo> findAll(Pageable pageable);

    /**
     * 保存一个商品信息
     *
     * @param productInfo
     * @return
     */
    ProductInfo save(ProductInfo productInfo);

    /**
     * 加库存
     *
     * @param cartDTOList
     * @return
     */
    void increaseStock(List<CartDTO> cartDTOList);

    /**
     * 减库存
     *
     * @param cartDTOList
     * @return
     */
    void decreaseStock(List<CartDTO> cartDTOList);

    /**
     * 下架
     *
     * @param productId
     * @return
     */
    ProductInfo offSale(String productId);

    /**
     * 上架
     *
     * @param productId
     * @return
     */
    ProductInfo onSale(String productId);
}
